package es.juanc.threads.sync;

public class Main {

	public static void main(String[] args) {

		Cuenta c1 = new Cuenta("xxxxx", 100);
		Cuenta c2 = new Cuenta("yyyyy", 200);
		Cuenta c3 = new Cuenta("zzzzz", 300);
		Cuenta c4 = new Cuenta("ggggg", 400);

		BankWorker bw1 = new BankWorker();
		bw1.setCuenta1(c1);
		bw1.setCuenta2(c2);

		BankWorker bw2 = new BankWorker();
		bw2.setCuenta1(c1);
		bw2.setCuenta2(c2);

		BankWorker bw3 = new BankWorker();
		bw3.setCuenta1(c3);
		bw3.setCuenta2(c4);

		System.out.println( "INI " + Thread.currentThread().getName() );

		bw1.start();
		bw2.start();
		bw3.start();

		System.out.println( "FIN " + Thread.currentThread().getName() );
	}
}

class BankWorker extends Thread {

	private Cuenta cuenta1;
	private Cuenta cuenta2;

	public void setCuenta1(Cuenta cuenta1) {
		this.cuenta1 = cuenta1;
	}

	public void setCuenta2(Cuenta cuenta2) {
		this.cuenta2 = cuenta2;
	}

	@Override
	public void run() {

		System.out.println( "HILO: " + Thread.currentThread().getName()
				+ ", " + cuenta1.getSaldo() + ", " + cuenta2.getSaldo() );

		System.out.println( "trasferencia: " + BankManager.transferencia(cuenta1, cuenta2, 55) + ", " + cuenta1.getSaldo() );

		System.out.println( "HILO: " + Thread.currentThread().getName()
				+ ", " + cuenta1.getSaldo() + ", " + cuenta2.getSaldo() );
	}
}